//数字游戏
#include <iostream>
using namespace std;
const int MAXN=50;
const int MAXM=9;
int num[MAXN*2+1];
int sum[MAXN*2+1];
int maxv[MAXN*2+1][MAXN*2+1][MAXM+1];//maxv[i][j][k]表示区间[i,j]划分为k组时所取得的最大值 
int minv[MAXN*2+1][MAXN*2+1][MAXM+1];//minv[i][j][k]表示区间[i,j]划分为k组时所取得的最小值

int n,m;
int main(){
    cin>>n>>m;
    sum[0]=0;
    for(int i=1;i<=n;i++) cin>>num[i];
    for(int i=n+1;i<=2*n-1;i++) num[i]=num[i-n];//为了开成环，补充1——n-1的数据到n的后面
    for(int i=1;i<=2*n-1;i++) sum[i]=sum[i-1]+num[i];//累积和

    //动规初始化
    for(int i=1;i<=2*n-1;i++)
        for(int j=i;j<=2*n-1;j++)
            for(int k=1;k<=m;k++){
                minv[i][j][m]=1000000000;
            }
    
    for(int i=1;i<=2*n-1;i++) 
        for(int j=i;j<=2*n-1;j++)
        {
            minv[i][j][1]=maxv[i][j][1]=((sum[j]-sum[i-1])%10+10)%10;
        }
    //动规
    for(int k=2;k<=n;k++){
        for(int i=1;i<=2*n-k;i++){
            int j=i+k-1;
            for(int p=2;p<=min(k,m);p++)
                for(int mid=i;mid<j;mid++)
                    for(int q=1;q<=min(p-1,mid-i+1);q++){
                        if (minv[i][j][p]>minv[i][mid][q]*minv[mid+1][j][p-q])
                                minv[i][j][p]=minv[i][mid][q]*minv[mid+1][j][p-q];
                        if (maxv[i][j][p]<maxv[i][mid][q]*maxv[mid+1][j][p-q])
                                maxv[i][j][p]=maxv[i][mid][q]*maxv[mid+1][j][p-q];
                    }
        }
    }
    int minans=1000000000;
    int maxans=0;
    for(int i=1;i<=n;i++){
        if (minans>minv[i][i+n-1][m]) minans=minv[i][i+n-1][m];
        if (maxans<maxv[i][i+n-1][m]) maxans=maxv[i][i+n-1][m];
    }
    cout<<minans<<endl;
    cout<<maxans<<endl;
}